package com.own.business.wallet.business.service;

import com.own.business.wallet.entity.bo.WalletHistoryBo;
import com.own.business.wallet.entity.map.WalletHistoryMapVo;
import com.own.business.wallet.entity.po.WalletHistory;
import com.own.business.wallet.entity.query.WalletHistoryQuery;
import com.own.business.wallet.entity.vo.WalletHistoryVo;
import com.own.component.common.base.service.BaseService;

import java.util.List;

/**
 * WalletHistoryService
 *
 * @author chenxueli
 * @date 2023-07-13 16:07:39
 */
public interface WalletHistoryService extends BaseService<
        WalletHistory,
        WalletHistoryBo,
        WalletHistoryVo,
        WalletHistoryMapVo,
        WalletHistoryQuery
        > {

    /**
     * 根据交易号获取交易记录
     *
     * @param tradeNo 交易号
     * @return 交易记录
     */
    WalletHistory getByTradeNo(String tradeNo);

    /**
     * 根据外部交易号获取交易记录
     *
     * @param outTradeNo 外部交易号
     * @return 交易记录
     */
    WalletHistory getByOutTradeNo(String outTradeNo);

    /**
     * 根据外部退款交易号获取交易记录
     *
     * @param outRefundNo 外部退款交易号
     * @return 交易记录
     */
    WalletHistory getByOutRefundNo(String outRefundNo);

    /**
     * 根据外部交易号获取交易记录
     *
     * @param outTradeNo 交易号
     * @return 交易记录
     */
    List<WalletHistory> listByOutTradeNo(String outTradeNo);

    /**
     * 交易关闭
     *
     * @param outTradeNo 外部交易号
     */
    void close(String outTradeNo);

}

